// pages/game/game.js
var TIME = 60;
Page({

  /**
   * 页面的初始数据
   */
  //非常重要*****
  //只有写在data的属性  才能在wxml中使用
  //才可以使用数据双向绑定的功能
  data: {
    //表示色块行数的属性
    row:2,
    //盛放色块详细信息的数组
    items:[],
    time:TIME,
    score:0,//分数
    step:0//步数
  },
   //初始化页面的调用  可以在这个函数中 不再wxmi中使用的属性
  onLoad:function(){
    this.width = 750;
    this.getDeviceWidth();
    this.gameCore();
    // 初始化titles的数组
    this.titles = ["色郎","色鬼","色魔","色圣"];
    //获取title的下标
    this.titleIndex = 0;
  },
  //游戏的核心部分
  gameCore:function(){
    //每一个色块的间距
    //平均分的临时色块宽度
    var tempColorViewWidth = this.width/this.data.row;
    //计算后的色块间距
    var space = tempColorViewWidth * 0.1;
    //色块的宽度 = （总宽度 - 总间距）/一行有多少色块
    var allSpace = space * (this.data.row+1);//总间距
    var colorViewWidth = (this.width-allSpace) / this.data.row;
    // 获取随机颜色
    var color = this.randColor();
    // 设置特殊颜色是哪一个色块
    var allNums = this.data.row * this.data.row;
    var specialIndex = parseInt(Math.random()*allNums);

    var tempList = [];
    //循环创建色块的信息 放入数组
    for(var i = 0;i<allNums;i++){
      var info = {
        width:colorViewWidth,
        color:color,
        space:space,
        opacity:i==specialIndex?0.5:1
      }
      tempList.push(info);
    }
    this.setData({
      items: tempList
    })
  },

  //随机颜色的函数
  randColor:function(){
    //parseInt(Math.random() * 256)随机0~255之间的整数
    var r = parseInt(Math.random() * 256)
    var g = parseInt(Math.random() * 256)
    var b = parseInt(Math.random() * 256)
    return "rgb("+r+","+g+","+b+")"
  },

   //获取设备的宽度
  getDeviceWidth:function(){
    wx.getSystemInfo({
      success: function(res) {
        this.width = res.windowWidth;
      }.bind(this)
    })
  },

  success:function(){
    //成功的时候 更新行数row的值
    //如果做难度扩展 可以添加专门改变this.data.row的值
    this.setData({
      row:++this.data.row,
      step:++this.data.step
    });
    //走5步 给一分
    if(this.data.step % 2 == 0){
      this.setData({
        score:++this.data.score
      })
    }
    if(this.data.score !=0 && this.data.score % 2 == 0){
      ++this.titleIndex;
    }
    //防止数组越界
    if(this.titleIndex >= this.titles.length){
      this.titleIndex = this.titles.length - 1;
    }
    
  },
  //检测titles
  getTitle:function(){
    return this.titles[this.titleIndex];
  },

  fail:function(){
    this.setData({
      row:2,
      //重置时间状态
      time:TIME
    });
    
    clearInterval(this.timer);
    wx.showModal({
      title: '温馨提示',
      content: '您已被警方锁定'+this.getTitle()+'',
      showCancel:'true',
      cancelText:'去自首',
      cancelColor:'red',
      confirmText:'重新检测',
      confirmColor:'orange',
      success:function(res){
        //点击去自首 返回上一页
        //点击继续检测 重新开始游戏
        console.log(res);
        res.cancel?this.back():this.reStartGame();
      }.bind(this)
    })
    this.titleIndex = 0;
  },
  //返回上一页
  back:function(){
    wx.navigateBack();
    //上传分数到服务器
  },
  reStartGame(){
    //重新开始计时
    this.timer=setInterval(this.updateTime,1000);
    this.gameCore();
  },
  //跟新时间的函数
  updateTime:function(){
    this.setData({
      time: --this.data.time
    })
    if(this.data.time<=0){
      this.fail();
    };
  },
  onShow:function(){
    this.timer = setInterval(this.updateTime,1000);
    this.playMusic();
  },
  onUnload:function(){
    clearInterval(this.timer);
    this.timer=null;
    this.stopMusic();
  },
  // 添加背景音乐 点击开始检测时播放
  playMusic:function(){
    wx.playBackgroundAudio({
      dataUrl: 'http://bmob-cdn-19176.b0.upaiyun.com/2018/05/16/3b8fd9254098f06b80b98482444c6450.mp3',
    })
  },
  // 游戏结束 音乐播放结束
  stopMusic:function(){
    wx.stopBackgroundAudio();
  },

  chooseAction:function(e){
    var opacity = e.currentTarget.dataset.opacity;
    opacity==1? this.fail():this.success();
    this.gameCore();
  }

})